package persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import negocio.Prediccion;

public class AdminPersistenciaPrediccionNacimiento {

	private static AdminPersistenciaPrediccionNacimiento instancia;
	
	public static AdminPersistenciaPrediccionNacimiento getInstancia(){
		if (instancia == null)
			instancia = new AdminPersistenciaPrediccionNacimiento();
		return instancia;
	}

	public int nacimientosMismoPeriodoAnioAnterior(String fechaInicial, String fechaFinal, String categoria){
			Connection con = PoolConnection.getPoolConnection().getConnection();
	try
	{
		PreparedStatement ps = con.prepareStatement("select sum(nacimientos)from " +
				"SEMISAG4.dbo.rodeosdiarios rd inner join " +
				"SEMISAG4.dbo.movimientosporrodeo mr on rd.idmovimientosporrodeo=mr.idmovimientosporrodeo inner join " +
				"SEMISAG4.dbo.rodeos r on r.idrodeo=mr.idrodeo inner join " +
				"SEMISAG4.dbo.movimientosrodeos movr on movr.idmovimiento=mr.idmovimiento inner join " +
				"SEMISAG4.dbo.Categorias c on c.idCategoria=r.idCategoria " +
				"where mr.fecha between ? and ? and c.tipo=?");
		
		ps.setString(1, fechaInicial);
		ps.setString(2, fechaFinal);
		ps.setString(3, categoria);
		ResultSet rs = ps.executeQuery();
		int resultado = 0;
		while (rs.next())
			resultado = rs.getInt(1);
		PoolConnection.getPoolConnection().realeaseConnection(con);
		return resultado;
	}
	catch(Exception e)
	{
		System.out.println("Error en select prediccion nacimientosMismoPeriodoAnioAnterior");
		return -1;

	}		
	}
	
	public int nacimientosALaFecha(){
		Connection con = PoolConnection.getPoolConnection().getConnection();
	try
	{
		PreparedStatement ps = con.prepareStatement("select sum(nacimientos)from " +
				"SEMISAG4.dbo.rodeosdiarios rd inner join " +
				"SEMISAG4.dbo.movimientosporrodeo mr on rd.idmovimientosporrodeo=mr.idmovimientosporrodeo inner join " +
				"SEMISAG4.dbo.rodeos r on r.idrodeo=mr.idrodeo inner join " +
				"SEMISAG4.dbo.movimientosrodeos movr on movr.idmovimiento=mr.idmovimiento inner join " +
				"SEMISAG4.dbo.Categorias c on c.idCategoria=r.idCategoria " +
				"where mr.fecha between '1/1/2012' and '18/7/2012' and c.tipo='ternero'");
		
		ResultSet rs = ps.executeQuery();
		int resultado = 0;
		while (rs.next())
			resultado = rs.getInt(1);
		PoolConnection.getPoolConnection().realeaseConnection(con);
		return resultado;
	}
	catch(Exception e)
	{
		System.out.println("Error en select prediccion nacimientosALaFecha");
		return -1;
	
	}		
	}

	public void insertarPrediccionNacimiento(Prediccion prediccion) {
		Connection con = PoolConnection.getPoolConnection().getConnection();
		try
		{	
			PreparedStatement ps = con.prepareStatement("insert into SEMISAG4.dbo.predicciones values (?,?,?,?,?)");
			ps.setString(1, "nacimiento");
			ps.setString(2, prediccion.getFechaInicio());
			ps.setString(3, prediccion.getFechaFin());
			ps.setInt(4, prediccion.getCategoria().getIdCategoria());
			ps.setString(5, String.valueOf(prediccion.getPrediccion()));
			
			ps.execute();
			PoolConnection.getPoolConnection().realeaseConnection(con);
		}
		catch(Exception e)
		{
			System.out.println("Error en insert prediccion de nacimiento");
		}
		
	}
		
}